home *** CD-ROM | disk | FTP | other *** search
/ ftp.mactech.com 2010 / ftp.mactech.com.tar / ftp.mactech.com / machack / Hacks97 / VerticalHold.sit / Vertical Hold / source code / InvertPlug.cpp < prev    next >
C/C++ Source or Header  |  1997-06-27  |  2KB  |  76 lines

  1. #include <LowMem.h>
  2. #include <A4Stuff.h>
  3. #include <QuickDraw.h>
  4. #include <Memory.h>
  5. #include <Resources.h>
  6. #include <Fonts.h>
  7. #include <Dialogs.h>
  8. #include <QDOffscreen.h>
  9. #include <string.h>
  10. #include <stdio.h>
  11. #include <Timer.h>
  12.  
  13. int invertPos = 0;
  14. int invertVal[100] =
  15. {
  16.     0, 1, 3, 4, 6, 7, 9, 10, 12, 13,
  17.     14, 15, 17, 18, 19, 20, 21, 21, 22, 23,
  18.     23, 24, 24, 24, 24, 24, 24, 24, 24, 24,
  19.     23, 23, 22, 21, 21, 20, 19, 18, 17, 15,
  20.     14, 13, 12, 10,  9,  7,  6,  4,  3,  1,
  21.      0, -2, -4, -5, -7, -8,-10,-11,-13,-14,
  22.    -15,-16,-18,-19,-20,-21,-22,-22,-23,-24,
  23.    -24,-25,-25,-25,-25,-25,-25,-25,-25,-25,
  24.    -24,-24,-23,-22,-22,-21,-20,-19,-18,-16,
  25.    -15,-14,-13,-11,-10, -8, -7, -5, -4, -2
  26. };
  27.  
  28. void initInvertPlug()
  29. {
  30. }
  31.  
  32. void disposeInvertPlug()
  33. {
  34. }
  35.  
  36. typedef struct {
  37.     TMTask            task;
  38.     Ptr                mainBaseAddr;
  39.     Size            worldBytes;
  40.     Ptr                worldBuffer;
  41.     short            rowBytes;
  42.     short            phase;
  43.     Rect            size;
  44.     short            offset;
  45. } MyTaskRec;
  46.  
  47. void doInvertPlug(MyTaskRec* myTask)
  48. {
  49.     EnterCodeResource ();
  50.     short            height = myTask -> size.bottom - myTask -> size.top;
  51.     short            phase = myTask -> phase;
  52.     short            rowBytes = myTask -> rowBytes;
  53.     Ptr                worldBuffer = myTask -> worldBuffer;
  54.     Ptr                screenBuffer = myTask -> mainBaseAddr;
  55.     
  56.     invertPos++;
  57.     if(invertPos > 99)
  58.         invertPos = 0;
  59.     
  60.     int i;
  61.     for(i = 0; i < height; i++)
  62.     {
  63.         char *j;
  64.         char *k;
  65.         
  66.         k = screenBuffer + (height - i) * rowBytes;
  67.         for(j = worldBuffer + i * rowBytes + rowBytes - 1; j >= worldBuffer + i * rowBytes; j--)
  68.         {
  69.             *k = *j;
  70.             k++;
  71.         }
  72.     }
  73.     ExitCodeResource ();
  74. }
  75.  
  76.